#ifndef AVALON_ZLIBDECODER_HPP
#define AVALON_ZLIBDECODER_HPP
#include "Avalon/Codecs/Decoder.hpp"

namespace Avalon {
namespace Codecs {

  /*! \class ZLibDecoder
   *  \brief Decodes ZLib compressed data.
   */
  class ZLibDecoder : public Decoder {
    public:

      //! Constructs a ZLibDecoder.
      ZLibDecoder();

      virtual ~ZLibDecoder();

      virtual bool IsDecodeInPlaceSupported() const;

      virtual void Decode(const void* source, int sourceSize, void* destination,
        int destinationSize, Out<int> decodedSize);

      virtual void Decode(const void* source, int sourceSize,
        IO::Buffer* destination, Out<int> decodedSize);

      using Decoder::Decode;
  };
}
}

#endif // AVALON_ZLIBDECODER_HPP
